#include <iostream>
#include <vector>
using namespace std;

/*
    冒泡排序
    使用 i 来不断的向后遍历，j 来进行比较
    怎么比较呢 假设长度是 5 
    i = 1 的话 j 从 0 开始加到 5-1-1 = 3比较一轮之后
    如果当前比下一个大就交换
    全部交换完成 i 到 n-1 是为了防止j++ 的时候溢出  
*/
void BubbleSort(vector<int>& arr);


/*
    选择排序
    首先 使用一个 min_index保存索引，初始 = i 然后跟每一个元素进行比较 
    如果存在比最小元素还要大的元素，就交换这两个的索引。让更小的成为最小元素 
    j就是 从 i+1 开始比较每一个 i 后面的元素是否比 i 更小 小就交换即可 
*/
void SelectSort(vector<int>& arr);


/*
    插入排序 
    插入排序本质是划分成两个区域 - 已排序好的部分 和 还没动的部分 
    假设左侧没排序，向着右侧插入。
    每次选出一个元素作为一个 key 值。
    如果 key 之前的值 有更大的 就两两交换 同时缩减未排序区域的长度
    简单来说，把大于key的值向后移动
    然后就可以插入key值了。

*/
void InsertSort(vector<int>& arr);


/*
    
*/
void printArray(vector<int>& arr);

